<%@page import="com.drerp.RH.constantes.TiposRole"%>
<%@page import="com.drerp.RH.HorasTrabalho"%>
<%@page import="java.util.GregorianCalendar"%>
<%@page import="java.util.Calendar"%>
<%@page import="java.util.Random"%>
<%@page import="com.drerp.RH.Colaborador"%>
<%@page import="com.drerp.RH.DAO.ColaboradorDAO"%>
<%@page import="com.drerp.RH.carreira.constantes.CamposColaboradorAfetados"%>
<%@page import="com.drerp.RH.carreira.constantes.UnidadesMetrica"%>
<%@page import="com.drerp.RH.carreira.Metrica"%>
<%@page import="com.drerp.RH.carreira.DAO.MetricaDAO"%>
<%@page import="com.drerp.RH.Cargo"%>
<%@page import="com.drerp.RH.DAO.CargoDAO"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.GregorianCalendar"%>
<%@page import="java.util.Calendar"%>
<%@page import="com.drerp.RH.Usuario"%>
<%@page import="com.drerp.RH.DAO.UsuarioDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
	String[] nomes = {"João", "Paulo", "Fernando", "Antônio", "Maria", "Eduarda", "Paula", "Carlos", "José", "Carla", "Natália"};
	String[] sobrenomes = {"Fonseca", "Martins", "Pereira", "Carvalho", "Moreira", "Alves", "Pontes", "Teixeira", "Gomes", "Campos", "da Mata"};
	String[] ruas = {"Rua das Cerejeiras, ", "Rua Dr. João Fernandes Vieira, ", "Rua Des. Guerra Barreto, ", "Rua Dr. João Fernandes Vieira, ", "Av. Martins de Barros, ", "Av. Elcina Lapenda, "};
	
	Random rand = new Random(Calendar.getInstance().getTimeInMillis());

	try {
		
		CargoDAO cargoDAO = new CargoDAO();
		
		ColaboradorDAO colabDao = new ColaboradorDAO();
		Colaborador admin = new Colaborador();
		Cargo cargo_admin = new Cargo("Admin", 5000d);
		cargo_admin.setRole(TiposRole.ADMIN);
		cargoDAO.save(cargo_admin);
		admin.setLogin("admin");
		admin.setSenha("admin");
		admin.setNome("Administador");
		admin.setData_nascimento(new GregorianCalendar(1978, 02, 21));
		admin.setEndereco("Rua Sem Fim, 12");
		admin.setTelefone("3234-1232");
		admin.setTel_celular("9832-1323");
		admin.setCargo(cargo_admin);
		colabDao.save(admin);
		
		
		Cargo medico = new Cargo("Medico", 5000d);
		medico.setRole(TiposRole.FUNCIONARIO);
		Cargo medico2 = new Cargo("Medico Supervisor", 10000d);
		medico2.setRole(TiposRole.FUNCIONARIO);
		Cargo atendente = new Cargo("Atendente", 700d);
		atendente.setRole(TiposRole.FUNCIONARIO);
		Cargo enfermeiro = new Cargo("Enfermeiro", 1200d);
		enfermeiro.setRole(TiposRole.FUNCIONARIO);
		Cargo enfermeiro2 = new Cargo("Enfermeiro Supervisor", 2200d);
		enfermeiro2.setRole(TiposRole.FUNCIONARIO);
		Cargo rh = new Cargo("Responsável de RH", 1500d);
		rh.setRole(TiposRole.FUNCIONARIO_RH);
		Cargo gerenteRh = new Cargo("Gerente de RH", 3500d);
		gerenteRh.setRole(TiposRole.GERENTE_RH);
		cargoDAO.save(medico);
		cargoDAO.save(medico2);
		cargoDAO.save(atendente);
		cargoDAO.save(enfermeiro);
		cargoDAO.save(enfermeiro2);
		cargoDAO.save(rh);
		cargoDAO.save(gerenteRh);
		
		Cargo[] cargos = {medico, medico2, atendente, enfermeiro, enfermeiro2, rh, gerenteRh};
		
		
		for (int i = 0; i < 50; i++) {
			Calendar inicio = new GregorianCalendar(rand.nextInt(3) + 2009, rand.nextInt(11), rand.nextInt(30), 10, 0);
			Calendar fim = (Calendar)inicio.clone();
			fim.set(Calendar.HOUR, 19);
			
			Colaborador colab = new Colaborador();
			colab.setCargo(cargos[rand.nextInt(7)]);
			colab.setCpf(String.valueOf(rand.nextInt(1000)) + "." + String.valueOf(rand.nextInt(1000)) + "." + String.valueOf(rand.nextInt(1000)) + "-" + String.valueOf(rand.nextInt(100)));
			colab.setData_nascimento(new GregorianCalendar(1970 + rand.nextInt(30), rand.nextInt(12), rand.nextInt(31)));
			colab.setEndereco(ruas[rand.nextInt(6)] + String.valueOf(rand.nextInt(1000)));
			colab.setLogin("usuario" + i);
			colab.setNome(nomes[rand.nextInt(11)] + " " + sobrenomes[rand.nextInt(11)]);
			colab.setRg_numero(String.valueOf(rand.nextInt(50)) + "." + String.valueOf(rand.nextInt(1000)) + "." + String.valueOf(rand.nextInt(1000)) + "-" + String.valueOf(rand.nextInt(10)) );
			colab.setSenha("senha");
			colab.setTel_celular(String.valueOf(rand.nextInt(9000) + 1000) + "-" + String.valueOf(rand.nextInt(9000) + 1000));
			colab.setTelefone(String.valueOf(rand.nextInt(9000) + 1000) + "-" + String.valueOf(rand.nextInt(9000) + 1000));
			colab.setDataContrato(inicio);
			colabDao.save(colab);
			
			while(fim.before(Calendar.getInstance())) {
				colab.addHorasTrabalhadas(new HorasTrabalho(inicio, fim));
				
				inicio.add(Calendar.DAY_OF_MONTH, 1);
				inicio.set(Calendar.MINUTE, rand.nextInt(60));
				inicio.set(Calendar.SECOND, rand.nextInt(60));
				inicio.set(Calendar.HOUR_OF_DAY, rand.nextInt(3)+8);
				
				fim.add(Calendar.DAY_OF_MONTH, 1);
				fim.set(Calendar.MINUTE, rand.nextInt(60));
				fim.set(Calendar.SECOND, rand.nextInt(60));
				fim.set(Calendar.HOUR_OF_DAY, rand.nextInt(3)+18);
			}
			
		}

		MetricaDAO metricaDAO = new MetricaDAO();
		Metrica tempoContrato = new Metrica("Tempo de Contrato", UnidadesMetrica.ANOS, CamposColaboradorAfetados.TEMPO_CONTRATO);
		Metrica horasTrabalhadas = new Metrica("Horas Trabalhadas", UnidadesMetrica.HORAS, CamposColaboradorAfetados.HORAS_TRABALHADAS);
		Metrica consultasRealizadas = new Metrica("Consultas Realizadas", UnidadesMetrica.CONSULTAS, CamposColaboradorAfetados.CONSULTAS_REALIZADAS);
		metricaDAO.save(tempoContrato);
		metricaDAO.save(horasTrabalhadas);
		metricaDAO.save(consultasRealizadas);
		
		out.println("Feito");
	} catch (Exception e) {
		out.println("Ocorreu um erro!");
		e.printStackTrace();
	}

%>

</body>
</html>